package com.example.sunsg.okhttptest.greendao.bean;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.example.sunsg.okhttptest.greendao.dao.DaoMaster;
import com.example.sunsg.okhttptest.greendao.dao.DaoSession;
import com.example.sunsg.okhttptest.greendao.dao.PlayMusicCollectionDao;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Created by NOTE-026 on 2016/6/24.
 */
public class DaoManager {
    private static final String DB_NAME = "susng_db";
    private static  DaoManager mInstance;
    public DaoSession mDaoSession;
    public SQLiteDatabase mDb;
    public GreenDaoSQLiteHelper mHelper;
    public DaoMaster mDaoMaster;
    public static DaoManager getInstance(Context context){
        if(mInstance == null){
            synchronized (DaoManager.class){
                if(mInstance == null){
                    mInstance = new DaoManager(context);
                }
            }
        }

        return mInstance;
    }

    private DaoManager(Context application){
        // 通过 DaoMaster 的内部类 DevOpenHelper，你可以得到一个便利的 SQLiteOpenHelper 对象。
        // 可能你已经注意到了，你并不需要去编写「CREATE TABLE」这样的 SQL 语句，因为 greenDAO 已经帮你做了。
        // 注意：默认的 DaoMaster.DevOpenHelper 会在数据库升级时，删除所有的表，意味着这将导致数据的丢失。
        // 所以，在正式的项目中，你还应该做一层封装，来实现数据库的安全升级。
        mHelper = new GreenDaoSQLiteHelper(application, DB_NAME, null);
        mDb = mHelper.getWritableDatabase();
        // 注意：该数据库连接属于 DaoMaster，所以多个 Session 指的是相同的数据库连接。
        mDaoMaster = new DaoMaster(mDb);
        mDaoSession = mDaoMaster.newSession();
    }

    public DaoSession getDaosession(){
        return mDaoSession;
    }

    public PlayMusicCollectionDao getPlayMusicCollectionDao(){
        return mDaoSession.getPlayMusicCollectionDao();
    }



    /**
     * 插入收藏点播
     * @param data
     */
    public void insertCollectionPlayMusic(PlayMusicCollection data){
        deleteByContent(data.getTitle());
        getPlayMusicCollectionDao().insert(data);

    }

    /**
     * 根据内容删除数据
     * @param content
     */
    public void deleteByContent(String content){
        if(mDb != null){
            mDb.delete(PlayMusicCollectionDao.TABLENAME,"TITLE = ?",new String[]{content});
        }
    }

    /**
     * 是否包含 content 数据
     * @param content
     * @return
     */
    public boolean containPlayMusic(String content){
        boolean contain = false;
        Cursor c = queryPlayMusicByContent(content);
        if(c != null){
            if(c.getCount() > 0){
                contain = true;
            }
            c.close();
        }
        return contain;
    }

    /**
     * 根据内容查询
     * @param content
     * @return
     */
    private Cursor queryPlayMusicByContent(String content){
        Cursor c = null;
        c= mDb.query(PlayMusicCollectionDao.TABLENAME,null,"TITLE = ?",new String[]{content},null,null,null);
        return c;
    }

}
